b22235605e15007429eee89b34c456b74f14e36b,driver-core/src/test/java/com/datastax/driver/core/HostConnectionPoolTest.java,HostConnectionPoolTest,should_not_resurrect_trashed_connection_after_idle_timeout,#,303

Before Change


            assertThat(connection2.inFlight.get()).isEqualTo(0);

            // Go back under the capacity of 1 connection
            completeRequests(51, requests);

            assertThat(connection1.inFlight.get()).isEqualTo(50);
            assertThat(connection2.inFlight.get()).isEqualTo(0);

            // Given enough time, one connection gets trashed (and the implementation picks the first one)
            Uninterruptibles.sleepUninterruptibly(20, TimeUnit.SECONDS);
            assertThat(pool.connections).containsExactly(connection2);
            assertThat(pool.trash).containsExactly(connection1);

            // Return trashed connection down to 0 inFlight
            completeRequests(50, requests);
            assertThat(connection1.inFlight.get()).isEqualTo(0);

            // Give enough time for trashed connection to be cleaned up from the trash:
            Uninterruptibles.sleepUninterruptibly(30, TimeUnit.SECONDS);
            assertThat(pool.connections).containsExactly(connection2);
            assertThat(pool.trash).isEmpty();
            assertThat(connection1.isClosed()).isTrue();

            // Fill the live connection to go over the threshold where a second one is needed
            requests.addAll(fillConnectionToThreshold(pool, singletonList(connection2)));
            assertThat(connection2.inFlight.get()).isEqualTo(101);
            verify(factory, after(2000).times(1)).open(any(HostConnectionPool.class));
            assertPoolSize(pool, 2);

After Change


        Cluster cluster = createClusterBuilder().withPoolingOptions(new PoolingOptions().setIdleTimeoutSeconds(20)).build();
        List<MockRequest> allRequests = newArrayList();
        try {
            HostConnectionPool pool = createPool(cluster, 1, 2);
            Connection.Factory factory = spy(cluster.manager.connectionFactory);
            cluster.manager.connectionFactory = factory;
            Connection connection1 = pool.connections.get(0);

            List<MockRequest> requests = MockRequest.sendMany(NEW_CONNECTION_THRESHOLD, pool);
            assertBorrowedConnection(requests, connection1);
            allRequests.addAll(requests);
            allRequests.add(MockRequest.send(pool));

            verify(factory, after(2000).times(1)).open(any(HostConnectionPool.class));
            assertPoolSize(pool, 2);
            reset(factory);
            Connection connection2 = pool.connections.get(1);

            assertThat(connection1.inFlight.get()).isEqualTo(101);
            assertThat(connection2.inFlight.get()).isEqualTo(0);

            // Go back under the capacity of 1 connection
            MockRequest.completeMany(51, allRequests);

            assertThat(connection1.inFlight.get()).isEqualTo(50);
            assertThat(connection2.inFlight.get()).isEqualTo(0);